#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project ：PythonData 
@File    ：chapter_4.py
@Author  ：朱志文
@Date    ：2021/11/9 10:13
@Practical：PTA
'''
'''
7-6 显示指定范围的素数并求和 (10 分)
本题要求显示给定整数M和N区间内素数并对它们求和。

输入格式:
在一行输入两个正整数M和N（1≤M≤N≤1000）。

输出格式:
显示指定范围的素数，素数间空一格，每五个换一行。 单独一行输出素数的个数及素数的和。

输入样例:
在这里给出一组输入。例如：

4 30
结尾无空行
输出样例:
在这里给出相应的输出。例如：

5 7 11 13 17 
19 23 29 
amount=8 sum=124
结尾无空行'''
# M, N = map(int, input().split())  # 输入两个整数
# flag = 1;  # 判断时候为素数
# amount = 0;  # 素数出现的次数
# sum = 0;  # 范围内素数的和
# list = [];  # 存入素数
# count = 0;  # 判断每行个数
# '''判断素数'''
# def isPrime(a):
#     for i in range(2, a):
#         if a % i == 0:  # 不是素数
#             return 0;
#             break;
#     else:
#         return 1;
# '''循环测试'''
# for i in range(M, N + 1):
#     if i>1:
#         flag = isPrime(i);
#         if flag == 1:  # 数素数
#             amount += 1;
#             sum += i;
#             list.append(i);
# for i in list:
#     print(i, end=' ')
#     count += 1;
#     if count % 5 == 0:
#         print()
# print()
# print(f'amount={amount} sum={sum}'.format(amount=amount, sum=sum))


'''7-1 输出摄氏-华氏温度转换表 (10 分)
输入2个正整数lower和upper（-20<=lower<=upper<=50），表示摄氏范围。请输出一张取值范围为[lower，upper]、 且每次增加2摄氏度的摄氏-华氏温度转换表。温度转换的计算公式： F=C×1.8+32 其中：C表示摄氏温度，F表示华氏温度。

输入格式:
在一行中输入2个整数，分别表示lower和upper的值，中间用空格分开。

输出格式:
第一行输出："celsius□□□□fahr"

接着每行输出一个摄氏温度celsius（整数）与一个华氏温度fahr（占据14个字符宽度，靠右对齐，保留1位小数）。

若输入的范围不合法，则输出"Invalid."。
'''
# lower, upper = map(int, input().split())
#
# if -20 <= lower <= upper <= 50:
#     print('celsius    fahr')
#     for C in range(lower, upper + 1, 2):
#         F = C * 1.8 + 32;
#         print('{:d}{:>14.1f}'.format(C, F))
# else:
#     print('Invalid.')

'''7-2 sdut-最大公约数和最小公倍数 (10 分)
给定2个正整数，求它们的最大公约数和最小公倍数，并输出。

输入格式:
输入有若干组。

每组数据，在一行中给出两个正整数M和N（≤1000），中间有1个空格。

输出格式:
对于每组输入，在一行中顺序输出M和N的最大公约数和最小公倍数，两数字间以1个空格分隔。'''

'''最大公约数'''

# def CommonFactor(x, y):
#     factor_max = max(x, y)
#     factor_min = min(x, y)
#     while factor_max % factor_min:  # 如果有余数则运行
#         factor_max, factor_min = factor_min, factor_max % factor_min
#     return factor_min
#
# '''最大公倍数'''
# def CommonMultiple(x, y):
#     return x * y // CommonFactor(x, y);  # 最大公倍数=x*y整除最大公约数
#
# while True:
#     try:
#         M, N = map(int, input().split())
#         print(CommonFactor(M, N), CommonMultiple(M, N), end=' ');
#     except:
#         break;

'''7-3 显示菱形图形 (10 分)
显示菱形图形，每行的宽度是11。

输入格式:
输入显示的行数，行数在1,3,5,7,9,11中取值

输出格式:
菱形图形，每行的宽度是11
'''

# def Prismatic(x):
#     num = int(x / 2)
#     for i in range(0, num):
#         '''内循环控制打印空格'''
#         for kg in range(5 - i):
#             print(' ', end='')
#         '''内循环控制打印*'''
#         for star in range(2 * i + 1):
#             print('*', end='')
#         '''内循环打印后面的空格'''
#         for kg in range(5 - i):
#             print(' ', end='')
#         print()
#     # 如果N为11时
#     if num == 5:
#         print('*' * 11)
#         num = num - 1
#     '''输出下三角'''
#     for i in range(num, -1, -1):
#         print(' ' * (5 - i - 1), '*' * (i * 2 + 1), ' ' * (5 - i - 1))
#
#
# '''输入并且调用方法'''
# N = int(input())
# if N in (1, 3, 5, 7, 9, 11):
#     Prismatic(N)

'''
7-4 求误差小于输入值的e的近似值 (10 分)
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
ei+1-ei<error,则表示e的近似值满足误差范围。

输入格式:
在一行输入误差范围,误差小于等于0.01。

输出格式:
在一行输出e的近似值（保留6位小数）。'''

# error = float(input())
# a, b, n = 1, 2, 2
# while b - a >= error:
#     a, b = b, b + (b - a) / n  #b是前n项和，a是前n-1项和（前n项和减去前n-1项和再除以n就是下一项）
#     n = n + 1
# print('%.6f' % b)


'''
7-6 分解素因子 (10 分)
假设n是一个正整数，它的值不超过1000000，请编写一个程序，将n分解为若干个素数的乘积。

输入格式:
首先输入一个正整数T，表示测试数据的组数，然后是T组测试数据。每组测试数据输入一个正整数n（1< n ≤1000000）。

输出格式:
每组测试对应一行输出，输出n的素数乘积表示式，式中的素数从小到大排列，两个素数之间用一个“*”表示乘法。若输入的是素数，则直接输出该数。'''

'''判断是否为素数'''
# def isPrimeNumbers(n):
#     for i in range(2,n):
#         if n%i==0:
#             return 0;
#     else:
#         return 1;
#
# #输入测试的组数
# T=int(input())
# list=[];
# primeList=[];
# flag=1;
# for i in range(T):
#     n=int(input())
#     list.append(n)
# for n in list:
#     if n>1:
#         flag = isPrimeNumbers(n)
#         #若为素数，则直接输出
#         if flag==1:
#             print(n)
#         #若不为素数则 分解
#         elif flag==0:
#             for i in range(2,n+1):
#                 if isPrimeNumbers(i):
#                     while n%i==0:
#                         primeList.append(i);
#                         n=n/i
#             count = 1;
#             for j in primeList:
#                 if count != len(primeList):
#                     print('{j}*'.format(j=j), end='')
#                     count += 1;
#                 else:
#                     print('{j}'.format(j=j), end='')
#             print()


T = eval(input())
for j in range(T):
    n = eval(input())
    i = 2
    while i <= n // i:
        if n % i == 0:
            print(i, '*', sep='', end='')
            n //= i
        else:
            i += 1
    print(n)

'''
7-7 打印数字三角形图案 (10 分)
本题目要求编写程序打印，输入一个正整数n（1<=n<=10)，输出由数字组成的三角形图案。

输入格式:
输入正整数n。

输出格式:
输出由数字组成的三角形图案，数字之间用没有空格分隔。'''
# n=int(input())
# if 1<=n<=10:
#     for i in range(1,n+1):
#         for j in range(1,i+1):
#             print(j,end='')
#         print()


'''
7-8 生成输入数的乘方表 (10 分)
输入一个非负数和正整数n，3<=n<=9，生成一张输入数的乘方表。

输入格式:
在一行输入一个非负数和正整数n。

输出格式:
按照幂的递增顺序输出n+1行，计算结果保留2位小数。'''

# m ,n = input().split()
# n = int(n)
# m = float(m)
# if 3<=n<=9:
#     for i in range(0,n+1):
#         print('{m}**{i}={result}'.format(m=m,i=i,result='%.2f'%(m**i)))

'''
7-9 求π的近似值 (10 分)
用公式求π的近似值：π2/6=1+1/22+1/32+1/42+。。。
当求和项小于误差时,结束求和。

输入格式:
在一行输入误差范围

输出格式:
在一行输出π的近似值（保留6位小数）。'''
# def fun(n):
#     sum=0;
#     count=1;
#     c=1;
#     while count>n:
#         count=1.0/c**2;
#         sum=count+sum;
#         c+=1
#     return (sum*6)**0.5
# n=eval(input())
# print('{:.6f}'.format(fun(n)))


'''
7-10 求分数序列前N项和 (10 分)
本题要求编写程序，计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起，每一项的分子是前一项分子与分母的和，分母是前一项的分子。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中输出部分和的值，精确到小数点后两位。题目保证计算结果不超过双精度范围。'''

N = int(input())
fenmu = 1;
fenzi = 2;
sum = 0;
for i in range(1, N + 1):
    sum = fenzi / fenmu + sum;
    fenzi, fenmu = fenzi + fenmu, fenzi;
print('%.2f' % sum)
